package es.gesfutbol.domini.implementacio;

import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import es.gesfutbol.domini.IEstadi;

@Entity
@Table(name="estadi")
public class Estadi implements IEstadi {
	/**
	 * 
	 */
	private static final long serialVersionUID = 453177659494319047L;

	private Long idEstadi;
	
	private String nom;
	
	private String direccio;
	
	private String ciutat;
	
	private Integer anyConstruccio;
	
	private String rutaEstadi;
	
	private boolean estaActiu;

	private Set<Equip> equips;
	
	private Set<Partit> partits;
	
	public Estadi() {
	}

	public Estadi(String nom, String ciutat, Integer anyConstruccio) {
		this.nom = nom;
		this.ciutat = ciutat;
		this.anyConstruccio = anyConstruccio;
	}

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="idEstadi", nullable=false, precision=10, scale=0)
	public Long getIdEstadi() {
		return idEstadi;
	}

	public void setIdEstadi(Long idEstadi) {
		this.idEstadi = idEstadi;
	}

	@Column(name="nom", nullable=false, length=45)
	public String getNom() {
		return nom;
	}

	public void setNom(String nom) {
		this.nom = nom;
	}
	
	@Column(name="direccio", nullable=false, length=45)
	public String getDireccio() {
		return direccio;
	}

	public void setDireccio(String direccio) {
		this.direccio = direccio;		
	}
	
	@Column(name="ciutat", nullable=false, length=45)
	public String getCiutat() {
		return ciutat;
	}

	public void setCiutat(String ciutat) {
		this.ciutat = ciutat;
	}

	@Column(name="any_construccio", nullable=true, precision=10, scale=0)
	public Integer getAnyConstruccio() {
		return anyConstruccio;
	}

	public void setAnyConstruccio(Integer anyConstruccio) {
		this.anyConstruccio = anyConstruccio;
	}
	
	@Column(name = "rutaEstadi", length = 45, nullable=true)
	public String getRutaEstadi() {
		return rutaEstadi;
	}

	public void setRutaEstadi(String rutaEstadi) {
		this.rutaEstadi = rutaEstadi;		
	}
		
	@Column(name="estaActiu", nullable=true, columnDefinition="tinyint(1) default 1")
	public boolean isEstaActiu() {
		return estaActiu;
	}

	public void setEstaActiu(boolean estaActiu) {
		this.estaActiu = estaActiu;
	}

	@ManyToMany(mappedBy="estadiAlternatiu")
	public Set<Equip> getEquips() {
		return equips;
	}

	public void setEquips(Set<Equip> equips) {
		this.equips = equips;
	}

	@OneToMany(fetch=FetchType.LAZY, mappedBy="estadi", cascade=CascadeType.ALL)
	public Set<Partit> getPartits() {
		return partits;
	}

	public void setPartits(Set<Partit> partits) {
		this.partits = partits;
	}

}
